home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / Drivers / GTDriver.lha / Distrib / docs / gtdriver.txt < prev    next >
Text File  |  1994-11-03  |  53KB  |  1,382 lines

  1.  
  2.  
  3.                            `GTDriver V1.0'
  4.                                by
  5.                  Roberto Attias and Marco Zandonadi
  6.  
  7.  
  8.  
  9.  
  10.    This document describes `GTDriver' V 1.0, a driver for serial graphic
  11. tablets and serial mice.
  12.  
  13. Overview
  14. ********
  15.  
  16.    `GTDriver' is a program to control serial graphic tablets and serial
  17. mice with your Amiga. Version 1.0 of `GTDriver' supports the following
  18. tablets:
  19.  
  20.    * Summagraphics MM
  21.  
  22.    * Summagraphics Bitpadone
  23.  
  24.    * CalComp 2000
  25.  
  26.    * Cherry
  27.  
  28.    * TekTronix 4957
  29.  
  30.    * Wacom (*note Known bugs or problems::.) and the following mice:
  31.  
  32.    * Microsoft mouse
  33.  
  34.    * Mouse System mouse
  35.  
  36.    If your tablet or mouse emulates one of the previous models you can
  37. use it with `GTDriver'. If not, contact the authors to have your device
  38. supported in the next release of the package (*note How to have your
  39. tablet supported::.).
  40.  
  41.    `GTDriver' has many parameters that can be configured using the
  42. program `GTDOptions'. Among the parameters, you can find the emulation
  43. type, the baud rate, the dpi tablet resolution and the dimensions of
  44. the clip region. These parameters must be properly set for both the
  45. driver and the tablet before you can start working (*note Configuring
  46. hardware::. and *note Configuring software. GTDOptions::.).
  47.  
  48.    `GTDriver' has two working modes: "driver mode" and "server mode".
  49. When started, `GTDriver' is in driver mode. In this mode, you can move
  50. the screen pointer just like you do with the mouse. If you are using a
  51. stylus, pressing it down is equivalent to clicking the mouse select
  52. button. Pressing the button on the stylus body (if present) is
  53. comparable to clicking the mouse menu button. If you have a digitizing
  54. puck it may have more than two buttons. However, only three buttons are
  55. supported in driver mode. The third button is mapped to the third Amiga
  56. mouse button (that is supported by few programs).
  57.  
  58.    Server mode is intended for programmers only. You can write your own
  59. programs that use `GTDriver' in server mode: in this way `GTDriver'
  60. will send complete tablet information to your program (instead of
  61. inserting it into the "input.device" chain) in a standard format, so
  62. you can take full advantage of tablet features in your software (*note
  63. Programming GTDriver::.).
  64.  
  65.    `GTDriver' supports user-defined tablet buttons (called
  66. "pseudo-buttons" or "p-buttons"). A p-button is a rectangular area on
  67. the tablet, to which an arbitrary key combination has been associated.
  68. Whenever you press the stylus on a pseudo button, its key combination
  69. is sent to the active program just like you were pressing it on the
  70. keyboard. As many programs use keyboard shortcuts to select tools and
  71. menu items, you can define sets of p-buttons even for programs not
  72. explicitly written to work with `GTDriver'. For example, you can use
  73. Deluxe Paint or DynaCadd with a graphic tablet without having tool bars
  74. on the screen, without selecting menu items and, most of all, without
  75. the software being aware of `GTDriver'!
  76.  
  77.      *Warning:* Before you can use your tablet with `GTDriver' you must
  78.      configure both the tablet and the driver.  Tablet configuration
  79.      consists of setting parameters affecting the way your tablet
  80.      behaves. Driver configuration consists of setting parameters that
  81.      define how `GTDriver' interprets data coming from the tablet.
  82.      Some driver parameters must be set in a compatible way with their
  83.      counterparts on the tablet. I.e. you will have to set the baud
  84.      rate at wich your tablet sends data to the driver. The driver will
  85.      have to be set at the same rate, or nothing will work.
  86.  
  87.    `GTDriver' requires O.S. V2.0 or greater. A fast CPU (68020/30/40) is
  88. not required but recommended.
  89.  
  90. Configuring hardware
  91. ********************
  92.  
  93.    Your graphic tablet has many internal parameters that must be
  94. configured before you can use it with `GTDriver'. Depending or your
  95. tablet model you can use one of the following methods:
  96.  
  97.    - sending configuration strings to the tablet from the computer
  98.      (*note Init string::.);
  99.  
  100.    - moving dip switches on your tablet;
  101.  
  102.    - pressing the stylus on a menu/mask over the tablet;
  103.  
  104.    Please refer to your tablet manual to understand which method to use.
  105. If your tablet is able to receive configuration strings, you should use
  106. the INIT field in the `GTDOptions' program to specify the string.  This
  107. is the preferred way to set up your device. To use this method you will
  108. need to compose a string using the character sequences associated to
  109. every setting. These sequences may be different from model to model so
  110. you will need to look them up in your tablet manual.
  111.  
  112.    If you set parameters by using dip switches you will need to do this
  113. only once.
  114.  
  115.    If you use menu/mask there should be a way to make permanent the
  116. changes you made (i.e. a button labeled "save" on your tablet).
  117.  
  118.    If you use an Init String, it will be sent to the tablet every time
  119. you start `GTDriver'.
  120.  
  121.    Here follows a list of typical tablet parameters:
  122.  
  123. Emulation
  124. =========
  125.  
  126.    Your tablet sends to the computer a stream of packets, each one
  127. containing information about the position and the button status of the
  128. pointing device (stylus or digitizing puck).  The way these information
  129. are stored in the packets is different from tablet model to tablet
  130. model. Some tablets may have only one packet format, while others may
  131. allow the user to choose among many formats. We call "emulation" the
  132. format of the packet.
  133.  
  134.    You must set one emulation among those supported by `GTDriver'.  You
  135. will have to set the same emulation for both tablet and the driver
  136. (*note Emulation (GTDOptions gadget)::.).
  137.  
  138.    The available emulations are:
  139.  
  140.    * Summagraphics MM
  141.  
  142.    * Summagraphics Bitpadone
  143.  
  144.    * CalComp 2000
  145.  
  146.    * Cherry
  147.  
  148.    * TekTronix 4957
  149.  
  150.    * Wacom
  151.  
  152.    * Microsoft mouse
  153.  
  154.    * Mouse System mouse
  155.  
  156. Data format
  157. ===========
  158.  
  159.    Some emulations has a dual form: binary or ASCII. The binary format
  160. is more compact and allows faster manipulation by the software. For
  161. this reason all the emulations supported by `GTDriver' are binary, and
  162. you must set your tablet in binary format.
  163.  
  164. Baud rate
  165. =========
  166.  
  167.    Being a serial device, a tablet may use different speeds to
  168. communicate with the computer. Usually the speed can range from 150
  169. baud to 9600 baud. You can choose any of these, but a speed between
  170. 2400 and 9600 baud will give better results.
  171.  
  172.    You will have to set the same rate for both tablet and the driver
  173. (*note Baud::.).
  174.  
  175. Data bits
  176. =========
  177.  
  178.    Number of bits sent to the serial port. Usually this parameter may
  179. be set to 7 or 8, but `GTDriver' expects eight bits, so you must set it
  180. to 8.
  181.  
  182. Operating mode
  183. ==============
  184.  
  185.    This parameter defines a set of conditions which trigger the
  186. transmission of coordinate data to the computer. Usually the following
  187. modes are available:
  188.  
  189. POINT
  190.      A packet is transmitted only when one button of the pointing device
  191.      is pressed while in proximity of the tablet surface.
  192.  
  193. STREAM
  194.      Packets are transmitted continuosly as long as the pointing device
  195.      is in proximity of the tablet surface. This mode is also referred
  196.      to as RUN.
  197.  
  198. TRACK
  199.      Packets are transmitted continuosly as long as one button of the
  200.      pointing device is hold pressed while in proximity of the tablet
  201.      surface.
  202.  
  203.    As `GTDriver' uses the stylus as a mouse replacement, the tablet
  204. must always send data to the driver; so you must set it to STREAM (or
  205. RUN) mode.
  206.  
  207. Sampling rate
  208. =============
  209.  
  210.    Speed at which the tablet generates packets.  If this value is too
  211. high, the serial device will be overloaded and you may experiment some
  212. strange behaviour of the screen pointer. On the other hand, if this
  213. value is too low, the pointer movements will be jerky. It is recommended
  214. to choose a value between 50 and 100 events per second.
  215.  
  216. Resolution
  217. ==========
  218.  
  219.    The number of separately discernable points in a given distance. It
  220. is expressed in Dots Per Inch (DPI). Resolution can usually range from
  221. 100 to about 1000 DPI. You can choose any value for this parameter. Of
  222. course, the higher
  223.  
  224.    the resolution the better the precision.
  225.  
  226.    You will have to set the same rate for both tablet and the driver
  227. (*note DPI::.).
  228.  
  229. Origin setting
  230. ==============
  231.  
  232.    This parameter defines where the origin of the coordinate system is
  233. located and how the axes are oriented. Usually, you should set the
  234. origin to the upper left corner of the tablet.  You may avoid to modify
  235. this parameter of your tablet because `GTDOptions' allows to adjust the
  236. origin by software using the  MirrorX, MirrorY and SwapXY parameters.
  237.  
  238. Coordinate mode
  239. ===============
  240.  
  241.    This parameter specifies if the coordinate pairs sent by the tablet
  242. to the serial port are absolute or are differences from the previous
  243. pairs (delta coordinates).  `GTDriver' does not handle delta
  244. coordinates, so you must set this to "absolute".
  245.  
  246. Configuring software. `GTDOptions'
  247. **********************************
  248.  
  249.    Once you have set the parameters for your tablet, you must set those
  250. for the driver using the `GTDOptions' prefs program.  This program
  251. saves the configuration in a file called `GTD.prefs'; this file can be
  252. found bin the "ENVARC:" and "ENV:" directori and is read by `GTDriver'
  253. every time it is started.
  254.  
  255.    `GTDOptions' is operated via a font-adaptive graphic user interface.
  256. This means that the program window adjusts itself and its gadgets
  257. depending on the current screen font (if you use square pixel
  258. resolution for your Workbench and you never gave up the old topaz 8
  259. font, try helvetica 13). If the screen font is too large, the program
  260. window is opened in topaz 8 font.
  261.  
  262.      *Tip*: `GTDOptions' lets you cycle through string and integer
  263.      gadgets (via the Tab key) even when no one of them is selected.
  264.      Try pressing the Tab key right after you started the program.
  265.  
  266.    Here follows a description for each gadget in the `GTDOptions'
  267. window:
  268.  
  269.    Here follows a description for each Menu Item:
  270.  
  271.    `Project Menu'
  272.  
  273.    `Edit Menu'
  274.  
  275.    `Settings Menu'
  276.  
  277. GTDOptions gadgets
  278. ==================
  279.  
  280.    In the following sections we describe the window gadget functions.
  281.  
  282. Emulation
  283. ---------
  284.  
  285.    Format used by the tablet to send data. To know wich emulations are
  286. supported by `GTDriver' *note Overview::..
  287.  
  288.      *Warning*: this parameter *must* match the tablet emulation
  289.      setting.
  290.  
  291. Init string
  292. -----------
  293.  
  294.    This gadget should be used to set your tablet if it supports
  295. configuration via serial port.  This is the preferred way to set up
  296. your device (*note Configuring hardware::.).
  297.  
  298.    Please understand that the Init String has nothing to do with
  299. `GTDriver' configuration: its purpose is to set tablet internal
  300. parameters. It could be said that the Init String field configures the
  301. hardware (the tablet) whereas all other gadgets in the window configure
  302. the software (the driver). Of course hardware and software are to be
  303. set in a compatible way so that they can communicate correctly.
  304.  
  305.    For example, if you have a tablet supporting Summagraphics MM and
  306. Calcomp 2000 emulations, you have to set it to use one emulation or the
  307. other.  Depending on your tablet you can do it by adjusting dip
  308. switches, by moving the stylus over a menu (or a mask) on the tablet or
  309. by software (sending a configuration string to the serial port). The
  310. Init String field provides a simple way to use the third method (if
  311. your tablet supports it). If you use the Init String, you have to check
  312. the manual that came with your tablet and look up the commands you can
  313. send. If your tablet does not support the configuration string you have
  314. to use the other methods (again, check your tablet manual).  If a
  315. command sequence includes non-printable characters they can be
  316. indicated by using the two digit hexadecimal ASCII code, preceeded by a
  317. "\x" string (i.e. the character whose ASCII code is 9 is indicated as
  318. "\x09"). You can also use "\n" for newline (ASCII code 10) and the "\\"
  319. sequence to specify the "\" character.
  320.  
  321.    After some commands a short delay may be needed before your tablet
  322. can process the remaining part of the init string. You can produce this
  323. delay using the "\p" sequence.
  324.  
  325. Init string for Summagraphics tablets
  326. .....................................
  327.  
  328.    For Summagraphics and compatible tablet models (Kurta, SummaSketch)
  329. we suggest to use the following Init string:
  330.  
  331.              \x00\p@Rh
  332.  
  333.    The following table shows the most important commands and their
  334. meaning:
  335.  
  336.            \x00   tablet reset
  337.            @      set run mode
  338.            Q      set maximal data rate
  339.            R      set high data rate
  340.            S      set medium data rate
  341.            T      set minimal data rate
  342.            b      origint to upper left corner
  343.            c      origin to lower left corner
  344.            d      Resolution 100 DPI
  345.            e      Resolution 200 DPI
  346.            f      Resolution 10  DPmm
  347.            g      Resolution 400 DPI
  348.            h      Resolution 500 DPI
  349.            i      Resolution 20  DPmm
  350.            j      Resolution 1000 DPI
  351.  
  352.    As you can see the suggested init string executes a tablet reset,
  353. sets a high data rate and a resolution of 500 DPI. Note that the reset
  354. command requires a delay, so a "\p" command has been introduced.
  355.  
  356. Init string for Wacom tablets
  357. .............................
  358.  
  359.    For Wacom and compatible tablet models we suggest to use the
  360. following Init string:
  361.  
  362.    - Wacom A5
  363.  
  364.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC1\nSU0\nAS1\nPH0\n
  365.  
  366.    - Wacom A5 pressure
  367.  
  368.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC1\nSU0\nAS1\nPH1\n
  369.  
  370.    - Wacom A4+
  371.  
  372.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH0\nLA3\n
  373.  
  374.    - Wacom A4+ pressure
  375.  
  376.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH1\nLA3\n
  377.  
  378.    - Wacom A3
  379.  
  380.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH0\nLA3\n
  381.  
  382.    - Wacom A3 pressure
  383.  
  384.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH1\nLA3\n
  385.  
  386.    - Wacom A3 +
  387.  
  388.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH0\nLA3\n
  389.  
  390.    - Wacom A3 + pressure
  391.  
  392.      RE\x0D\n\pSR\nAS1\nLA2\nIT4\nIC0\nSU0\nAS1\nPH1\nLA3\n
  393.  
  394. Priority
  395. --------
  396.  
  397.    Priority of the `GTDriver' process. A value of 5 should be
  398. appropriate in almost every situation. The maximum value allowed for
  399. this parameter is 19.
  400.  
  401. Pressure
  402. --------
  403.  
  404.    This parameter has a meaning only for pressure sensitive tablets. It
  405. tells the driver the threshold above which a stylus pressure will be
  406. translated in a left mouse button event by `GTDriver'. If the stylus
  407. pressure value is inferior to the Pressure field value, `GTDriver'
  408. ignores it.  The only pressure sensitive tablet supported by `GTDriver'
  409. 1.0 is Wacom.
  410.  
  411. Device
  412. ------
  413.  
  414.    Under normal conditions your tablet will be connected to the
  415. standard Amiga serial port.  This port is controlled by the
  416. "serial.device" , and its unit number is 0 (these two settings are the
  417. defauts).  However, third party serial boards exist that are driven by
  418. different software devices and that may have different unit numbers, so
  419. you are allowed to specify the name of the device and the unit number
  420. in the corresponding fields of `GTDOptions'.
  421.  
  422. Baud
  423. ----
  424.  
  425.    Baud rate at wich `GTDriver' communicates with the tablet. You can
  426. choose values between 150 and 9600.
  427.  
  428.      *Warning*: this parameter *must* match the tablet baud rate
  429.      setting.
  430.  
  431. Metric
  432. ------
  433.  
  434.    Metric preferences (centimeters or inches) for the values expressed
  435. in fields Clip, XDim and YDim. If Metric is changed then Clip, XDim and
  436. YDim values are converted on the fly.
  437.  
  438. XDim and YDim
  439. -------------
  440.  
  441.    Dimensions of the tablet "active area": the area in which a stylus
  442. move or pressure is translated to a serial message (the sensitive part
  443. of your tablet). Values are expressed in centimeters or inches
  444. depending on the status of the Metric gadget.  The minimum value
  445. allowed for both fields is 2 inches.
  446.  
  447.      *Note:* You may notice that after lowering XDim or YDim values,
  448.      Clip value gets lowered  too. This happens because `GTDOptions'
  449.      makes sure that the clip region is always at  least 2x2 inches.
  450.  
  451. DPI
  452. ---
  453.  
  454.    Tablet DPI resolution. DPI is for Dots per Inch. The higher this
  455. value the better the precision.
  456.  
  457.      *Warning*: this parameter *must* match the tablet emulation
  458.      setting.
  459.  
  460. Clip
  461. ----
  462.  
  463.    The "clip region" is a part of the active area that is used for
  464. screen pointer movements. The Clip field specifies the clip region as a
  465. rectangle centered inside the active area; the Clip value is the
  466. distance between a border of the active area and the corresponding
  467. border of the clip region.
  468.  
  469.    I.e. if a value of 1 is specified, the metric setting is inches, the
  470. XDim and YDim values are both 12 inches, the clip region  is a
  471. 10-inch-sided square.
  472.  
  473.    The Clip value is expressed in centimeters or inches depending on
  474. the status of the Metric gadget.
  475.  
  476.    Note well: since the minimum value for XDim and YDim is 2 inches,
  477. the maximum value for Clip is
  478.  
  479.         min(XDim, YDim) - 2 inches)
  480.         ---------------------------
  481.                     2
  482.  
  483.    This ensures that the clip region is always at least 2 inches.
  484.  
  485. Swap XY
  486. -------
  487.  
  488.    The SwapXY flag exchanges the tablet X and Y axes. Mixing SwapXY,
  489. MirrorX and MirrorY allows you to rotate and use your tablet at any
  490. orientation.
  491.  
  492. Mirror X and Mirror Y
  493. ---------------------
  494.  
  495.    It may happen that mouse movements are reversed (e.g. you move the
  496. stylus right and the screen pointer moves left). This should be due to
  497. a wrong position of the tablet origin (*note Configuring hardware::.).
  498. You may solve this problem by using the MirrorX and MirrorY gadgets.
  499. MirrorX mirrors the X-axis and MirrorY mirrors the Y-axis on the tablet.
  500.  
  501. `GTDOptions' menus
  502. ==================
  503.  
  504.    In the following sections we describe the menu items functions.
  505.  
  506. Open
  507. ----
  508.  
  509.    Opens an ASL file requester for choosing a prefs file to load in
  510. `GTDOptions'.
  511.  
  512.      *Keyboard shortcut:* Right-Amiga-o.
  513.  
  514. Save As
  515. -------
  516.  
  517.    Opens an ASL file requester for saving the current preferences with
  518. a user-selected name.
  519.  
  520.      *Keyboard shortcut:* Right-Amiga-a.
  521.  
  522. About
  523. -----
  524.  
  525.    Gives some informations about the authors and about current program
  526. versions.
  527.  
  528. Quit
  529. ----
  530.  
  531.    Exits `GTDOptions'.
  532.  
  533.      *Keyboard shortcuts:* Right-Amiga-q or the ESC key.
  534.  
  535. Last Saved
  536. ----------
  537.  
  538.    Loads last saved prefs file, without opening a file requester.
  539.  
  540.      *Keyboard shortcut: *Right-Amiga-l.
  541.  
  542. Starting and exiting `GTDriver'
  543. *******************************
  544.  
  545.    `GTDriver' can be started from shell or Workbench.
  546.  
  547.    To start `GTDriver' from Workbench (preferred way) you must double
  548. click on its icon. The driver will run using the parameters found in
  549. the file `ENV:GTD.prefs'. You have to set these parameters by using the
  550. `GTDOptions' program. If this file is not found, `GTDriver' informs you
  551. about it and runs with the default parameters.
  552.  
  553.    You can also start `GTDriver' from Workbench by double clicking on a
  554. p-button project icon. Such icon has to be associated to an ASCII file
  555. containing the pseudo-buttons definition (*note Pseudo-buttons::. to
  556. know how to use this feature).
  557.  
  558.    If you start `GTDriver' from shell, you may override some of the
  559. settings in `ENV:GTD.prefs' by using arguments on the command line. The
  560. shell template is the following:
  561.  
  562.      EMUL=Emulation/K,Device/K,Unit/K/N,Baud/K/N,DPI/K/N,Metric/K,
  563.      Xdim/K,Ydim/K,MX=MirrorX/S,MY=MirrorY/S,SwapXY/S,CLIP/K,Init/K,
  564.      Pri/K/N,Pressure/K/N,ButDef/K,Verbose/S,Help/S
  565.  
  566.    Most parameters are equivalent to the ones specified by using
  567. `GTDOptions'; the remaining parameters are:
  568.  
  569. BUTDEF
  570.      allows to specify a file name containing the description of a set
  571.      of p-buttons; (*note Pseudo-buttons::.)
  572.  
  573. VERBOSE
  574.      if this keyword is given the state of the parameters is printed in
  575.      the shell;
  576.  
  577. HELP
  578.      Shows a little explanation of the keywords and exits
  579.  
  580.    `GTDriver' does not detach from the shell, so if you want to use the
  581. shell after starting it, you must use the `run' command.
  582.  
  583.    There are many ways to kill `GTDriver'. If you started the program
  584. from shell you can press CTRL-c or send a break-signal to the program
  585. with the command
  586.  
  587.        break CLI PROCESS NUMBER
  588.  
  589.    (you can obtain the CLI process number by using the `status'
  590. command).
  591.  
  592.    A second way you to end `GTDriver' is by starting it again. A
  593. requester will be opened asking you if you want to kill it or to not.
  594. The last way to kill the driver is intended for programmers and is
  595. explained in the programmer section.
  596.  
  597. Pseudo-buttons
  598. **************
  599.  
  600.    Pseudo-buttons are rectangular regions defined on the tablet. They
  601. must be outside the clip region.
  602.  
  603.    Each pseudo-button may have one or two keyboard sequences associated
  604. to it. When the stylus (or button 0 of the digitizing puck) is pressed
  605. over a pseudo-button, the first keyboard sequence is sent to the active
  606. program.  When the button on the stylus (or button 1 of the digitizing
  607. puck) is pressed over the pseudo-button, the second keyboard sequence
  608. is sent.  I.e.: if you created a pseudo button with keyboard sequence
  609. Left Amiga-o (usually mapped to the "Project/Open" menu item) when you
  610. press the stylus on it, the active application opens a file requester
  611. just like if you pressed Left Amiga-o on the keyboard.
  612.  
  613.    You can edit your own sets of p-buttons to be used with paper masks
  614. over the tablet.
  615.  
  616.    Every set of p-buttons is defined in an ASCII file. We suggest to
  617. use a filename with extension ".but".  The file contains a command
  618. specifying the metric, followed by the clip region coordinates and one
  619. or more button definitions. If a ";" is found, the remaining part of
  620. the line is interpreted as a comment. The text can be typed in lower or
  621. upper case.
  622.  
  623.    The metric-mode command must be the first command in the file. This
  624. command spcifies the metric unit used to interret the button and clip
  625. definitions. It has the following syntax:
  626.  
  627.        Metric cm
  628.    or
  629.        Metric inches
  630.  
  631.    The metric definition must be followed by the "clip" command. This
  632. command allows to define the clip region. When you move the pointing
  633. device inside this area the screen pointer moves accordingly. P-buttons
  634. will have to reside on the tablet outside of the clip area. When using
  635. `GTDriver' with a button file, the clip rectangle definition replaces
  636. the one defined with the `clip' gadget of `GTDOptions'. The syntax for
  637. this command is:
  638.  
  639.        Clip ULC_X ULC_Y LRC_X LRC_Y
  640.  
  641. where (ULC_X, ULC_Y) are the coordinates of the upper left corner, while
  642. (LRC_X, LRC_Y) are the coordinates of the lower right corner.
  643. Coordinates can be positive, negative or null.  A positive x coordinate
  644. means a distance from the side upon wich the y axis lies. A negative x
  645. coordinate means a distance from the opposite side of the tablet. The
  646. same holds for y coordinates.  Null coordinates are interpreted in
  647. different ways for ULC and LRC.  A null coordinate is interpreted as a
  648. positive coordinate for ULC, while it is interpreted as negative for
  649. LRC.  Here there are some examples of metric and clip commands:
  650.  
  651.       Metric cm
  652.       Clip 1 2 -3 -4
  653.  
  654.    defines a clip region with left side 1 cm far from tablet left side,
  655. top side 2 cm far from tablet top side, right side 3 cm far from tablet
  656. right side and bottom side 4 cm far from tablet bottom side.
  657.  
  658.       Metric cm
  659.       Clip 0 0 0 0
  660.  
  661.    defines a clip region covering the whole active area.
  662.  
  663.    Negative coordinates have been implemented for defining clip regions
  664. and p-buttons that adapt to the width and height of the tablet. In this
  665. way you can create masks and distribute them to people with different
  666. sized tablets. I.e. suppose you want to define a clip region leaving a
  667. half-inch border on the left top and bottom sides, and a two inch
  668. border on the right side to put a p-button bar in it. If your tablet is
  669. 12 * 12 inches you can insert in the button file the following commands:
  670.  
  671.       Metric inches
  672.       Clip 0.5 0.5 10 11.5
  673.  
  674.    Anyway if you give this file to someone having a different sized
  675. tablet, he will not be able to use it. The following method ensures the
  676. correct compatibility:
  677.  
  678.       Metric inches
  679.       Clip 0.5 0.5 -2 -0.5
  680.  
  681.    obviously the clip region will have different sizes in the two cases
  682. (depending on the size of the tablet used), but the border widths will
  683. be the same.
  684.  
  685.    After the clip command you have to type one or more p-button
  686. definitions, each one with the following syntax:
  687.  
  688.        Button RECTANGLE DEFINITION SELECTOR [QUALIFIERS] KEY
  689.                                     [SELECTOR [QUALIFIERS] KEY]
  690.    where:
  691.  
  692.    - RECTANGLE DEFINITION are two coordinate pairs defining the button
  693.      area.   as for the CLIP command you can use positive or negative
  694.      coordinates.
  695.  
  696.    - SELECTOR can be the string B0 or B1. B0 refers to the action of
  697.      pressing the stylus over the p-button while B1 refers to pressing
  698.      the button on the stylus body (if present).
  699.  
  700.    - QUALIFIERS and KEY define a key combination to be sent to the
  701.      active program when the corresponding action (B0 or B1 pressure)
  702.      happens.  QUALIFIERS is a sequence of one or more strings
  703.      corresponding to special keys such as Ctrl, Alt, Shift, etc.
  704.      Possible string values for QUALIFIER are
  705.  
  706.           control      (CTRL key)
  707.           lalt         (Left-Alt key)
  708.           ralt         (Right-Alt key)
  709.           lcommand     (Left-Amiga key)
  710.           Rcommand     (Right-Amiga key)
  711.           lshift       (Left-Shift key)
  712.           rshift       (Right-Shift key)
  713.           numericpad   (Numeric Pad key)
  714.  
  715.      You can not use the `l/rshift' qualifier but with `raw' special
  716.      command (see below).
  717.  
  718.    - KEY is a key identifier. On a keyboard normal and special keys are
  719.      present. Normal keys generate characters: among them there are
  720.      alfanumeric keys, punctuation keys, and others. Special keys have
  721.      particular functions: among them there are the editing keys (i.e.
  722.      backspace, delete and cursor keys), function keys and others. To
  723.      express a normal key in the KEY field you can type it or you can
  724.      use its two digit hexadecimal ASCII code, preceeded by a "\x"
  725.      string (i.e. the character whose ASCII code is 09 is indicated as
  726.      "\x09").  You can also use "\n" for newline (ASCII code 10) and
  727.      the "\\" sequence to specify the "\" character. To express a
  728.      special key just use one of the following special identifiers:
  729.  
  730.           "BACKSPACE", "CURSOR_DOWN", "CURSOR_LEFT", "CURSOR_RIGHT",
  731.           "CURSOR_UP","DEL", "ESC", "F1", "F2", "F3", "F4", "F5", "F6",
  732.           "F7", "F8", "F9", "F10", "HELP","TAB".
  733.  
  734.      If the program to build the button mask for gets keyboard inputs
  735.      as raw keys (i.e.  Dpaint 4.5) you may need to express some keys
  736.      as raw data. For this purpose the special command `raw' has been
  737.      provided. `Raw' is to be follwed by the raw code for the key (see
  738.      the example below). You can use any qualifier together with a raw
  739.      key definition.
  740.  
  741. To understand the BUTTON syntax easily take a look at the following
  742. examples:
  743.  
  744.          Button -1 0 0 1 b0 LAlt LShift p
  745.  
  746.    defines a 1 x 1 inches or cm (depending on the METRIC command)
  747. p-button located in the upper right corner of the tablet active area.
  748. When you press the stylus over it, the active program receives a
  749. left-alt-left-shift-p key combination.
  750.  
  751.          Button -1 1 0 2 b0 Ctrl a b1 TAB
  752.  
  753.    defines a 1 x 1 inches or cm (depending on the METRIC command)
  754. p-button located under the previous one. When you press the stylus over
  755. it, the active program receives a ctrl-a key combination, while if you
  756. press the button on the stylus a TAB key is sent.
  757.  
  758.          Button -1 2 0 3  b0 LShift RAW \x39
  759.  
  760.    defines a 1 x 1 inches or cm (depending on the METRIC command)
  761. p-button located under the previous one. When you press the stylus over
  762. it, the active program receives a key combination composed of the left
  763. shift key and the key whose raw code is 39. Such key corresponds to the
  764. ">" key on American keyboards, and ":" on Italian keyboards.
  765.  
  766.    For further examples, take a look at the `Dpaint.but' file of the
  767. distribution.
  768.  
  769. Programming `GTDriver'
  770. **********************
  771.  
  772.    This section is intended for programmers only, so, if you are not a
  773. programmer, you may skip to the next section.  `GTDriver' has a public
  774. message port, named `GTDPubPort'. By sending special messages to such
  775. port you can quit the driver, change the internal settings, and set it
  776. to "server mode" (see below).
  777.  
  778.    To enable your C programs to send commands to this port you will
  779. need to include the file `GTDriverMPC.h' containing constant
  780. definitions and structures used to communicate with the driver.
  781. `GTDriverMPC.h' can be found in the `Sources' directory of the
  782. distribution.
  783.  
  784.    Every command sent to `GTDriver' is a structure `TabletCommand':
  785.  
  786.          struct TabletCommand {
  787.              struct Message msg;
  788.              UWORD  Command;
  789.              APTR   Data;
  790.          };
  791.  
  792.    The `Command' field must be initialized with one of the MPC_XXX
  793. constants, that identify commands (and that are found in
  794. `GTDriverMPC.h').  The `Data' field can be initialized with a command
  795. parameter (if the Command requires it). The msg field is a normal
  796. struct Message (see the example below, to understand how to initialize
  797. it).  When the struct TabletCommand instance is initialized correctly,
  798. you can send it to the public port of `GTDriver' by using the PutMsg()
  799. system function.  After you sent the message you have to wait for the
  800. reply to a message port you previously set up. When you receive the
  801. reply you must check the `Command' field of the message for the
  802. acknowledgement: if it's equal to COMMAND_OK your request has been
  803. satisfied, otherwise the field contains COMMAND_FAILED. In this case
  804. you can get some info on the reason of the failure by reading the
  805. `Data' field (it will be set to one of the CMDERR_ constants).
  806.  
  807.    Here follows a fragment of code showing how to send commands:
  808.  
  809.      :   :   :   :
  810.      /* The TabletCommand instance (Tcmd) is a global variable in this example
  811.      */
  812.      struct TabletCommand Tcmd;
  813.      :   :   :   :
  814.      /* Somewhere you must create a message port to receive replies to. You
  815.      ** also need to init your TabletCommand instance with the port address
  816.      */
  817.          Tcmd.msg.mn_Node.ln_Type = NT_MESSAGE;
  818.          Tcmd.msg.mn_ReplyPort = myreplyport;
  819.          Tcmd.msg.mn_Length = sizeof(struct TabletCommand);
  820.      :   :   :   :
  821.      
  822.      /* Here follows a sample function you can use to send commands
  823.      */
  824.      short SendCommand(ULONG comm, ULONG data)
  825.      {
  826.          Tcmd.Command = comm;
  827.          Tcmd.Data = (void *)data;
  828.      
  829.          /* Here we look for GTDriver message port; if it does not exist we return
  830.          ** NO_PUBPORT. Note that you should always FindPort() before sending a
  831.          ** message because the driver may have been quitted.
  832.          */
  833.          Forbid();
  834.          port = FindPort(GTDPUBPORTNAME);
  835.          if (! port) {
  836.              Permit();
  837.              return NO_PUBPORT;
  838.          }
  839.          /* We send the message and wait for the reply
  840.          */
  841.          PutMsg(port,(struct Message *)&Tcmd);
  842.          Permit();
  843.          WaitPort(repport);
  844.          GetMsg(repport);
  845.      
  846.          /* We return Tcmd.Command: if it contains COMMAND_OK then everything went
  847.          ** fine, otherwise in Tcmd.Data you find a CMDERR_xxx code explaining what
  848.          ** happened.
  849.          */
  850.          return (short )Tcmd.Command;
  851.      }
  852.  
  853.    `GTDriver' works synchronously, so you must wait for the reply to a
  854. command before sending a new one.  Here follows command explanations.
  855. They are preceeded by a short reference with three fields:
  856.  
  857.          Command: THE NAME OF THE COMMAND
  858.          Data:    EXPLANATION OF THE PARAMETER FOR THE COMMAND (IF NEEDED)
  859.          Errrors: NAME OF THE CONSTANT THAT CAN BE FOUND IN THE DATA FIELD
  860.                   OF THE MESSAGE AFTER THE WAITPORT() IF THE COMMAND HAS FAILED
  861.                   (COMMAND == COMMAND_FAIL)
  862.  
  863.    You can find some examples on how to program `GTDriver' in the
  864. `sources' directory of the distribution.
  865.  
  866.    The allowed commands are
  867.  
  868. MPC_SERVERMODE command
  869. ======================
  870.  
  871.          Command: MPC_SERVERMODE
  872.          Data:   ADDRESS OF THE CLIENT PORT
  873.          Error:  CMDERR_SERVER   (`GTDriver' is already a server)
  874.  
  875.    This command can switch `GTDriver' to "server mode". When started,
  876. `GTDriver' is in "driver mode": this means that the driver sends its
  877. data in the input.device chain, controlling the screen pointer
  878. movements. With an MPC_SERVERMODE command, your program makes the
  879. driver send it information in the form of messages sent to a private
  880. message port of its. In this case your program is called "client",
  881. while the driver is called "server". While it is in "server mode"
  882. `GTDriver' does not control the screen pointer any more.
  883.  
  884.    When sending the MPC_SERVERMODE command the `Data' field must be set
  885. to the address of the port at which you wait for serial info. Note that
  886. this port must be different from the reply port where you WaitPort() for
  887. acknowledgement after you send a command to the driver. The
  888. MPC_SERVERMODE command may fail if `GTDriver' is already in "server
  889. mode": in fact when in "server mode" the driver will refuse every
  890. command not coming from the client program exept MPC_GETPREFS. The
  891. format of the messages sent by `GTDriver' to your program is the
  892. following:
  893.  
  894.          struct TabletMessage {
  895.              struct Message msg;
  896.              UWORD type;
  897.              UWORD x,y;
  898.              ULONG buttons;
  899.              char  key;
  900.              WORD  pressure;
  901.          };
  902.  
  903.    where
  904.    - `type' can be TMTYPE_COORDS, indicating that the message is due to
  905.      a stylus movement or button pressure, or TMTYPE_PBUTTON, if some
  906.      pseudo-button has been used;
  907.  
  908.    - `x,y' are the coordinates of the stylus expressed in tablet dots;
  909.  
  910.    - `buttons' is a binary mask indicating the state of the buttons.
  911.      Each bit expresses the status of a button (0 means released and 1
  912.      means pressed).
  913.  
  914.    - `key' matches the KEY field of the definition of a pseudo-button
  915.      if such p-button has been pressed (in this case TYPE ==
  916.      TMTYPE_PBUTTON);
  917.  
  918.    - `pressure' reports the pressure value of the stylus on the tablet
  919.      in the Wacom emulation;
  920.  
  921.    X and y are expressed in dots. Dots are used internally by the
  922. driver instead of centimeters or inches. If you need to convert dots in
  923. inches or centimeters use the following formulas:
  924.  
  925.          x_inches = ((float)Tmsg->x)/DPI;    x_cm = x_inches * CONV_INCHES2CM;
  926.          y_inches = ((float)Tmsg->y)/DPI;    y_cm = y_inches * CONV_INCHES2CM;
  927.  
  928.    where CONVINCHES2CM is a constant defined in the `GTDriverMPC.h'
  929. file. You can know about the internal `GTDriver' DPI setting with the
  930. command MPC_GETPREFS.
  931.  
  932.      *Warning:* `GTDriver' works sincronously. This means that it does
  933.      not send a new TabletMessage to your program if the previous one
  934.      has not been ReplyMsg()'ed. As the driver Wait() for your reply,
  935.      data coming from the tablet are lost if you don't do it quickly.
  936.      Your tablet event routine has to handle messages quite fastly, or
  937.      you will loose data.
  938.  
  939.    Note that by using server mode your program may know about more than
  940. three buttons (if they are present on your device) and it may also know
  941. about pressure (if you have a Wacom tablet). These information are not
  942. available in driver mode.
  943.  
  944.      *Warning:* your program `must' switch `GTDriver' back to driver
  945.      mode before closing its message port. For performance reasons
  946.      `GTDriver' does not search for your program's port before sending
  947.      data.  So, if your program closes it before resetting `GTDriver'
  948.      to driver mode, a system crash is almost guaranteed.
  949.  
  950. The MPC_DRIVERMODE command
  951. ==========================
  952.  
  953.          Command: MPC_DRIVERMODE
  954.          Data:   -
  955.          Error:  CMDERR_SERVER    (your program is not the client)
  956.  
  957.    This command switches `GTDriver' back to driver mode. After getting
  958. it, `GTDriver' will start controlling the screen pointer movements and
  959. will stop sending data to the client program. The command will not work
  960. if the sending program is not the client.
  961.  
  962. The MPC_QUIT command
  963. ====================
  964.  
  965.          Command: MPC_QUIT
  966.          Data:   -
  967.          Error:  MPC_SERVER    (your program is not the client)
  968.  
  969.    This command makes `GTDriver' exit. If `GTDriver' is in server mode,
  970. only the client can send this command. If `GTDriver' is in driver mode
  971. any program is allowed to send this command.
  972.  
  973. The MPC_GETPREFS command
  974. ========================
  975.  
  976.          Command: MPC_GETPREFS
  977.          Data:   POINTER TO AN INSTANCE OF A `GTDPREFS' STRUCTURE
  978.          Error:  -
  979.  
  980.    By sending this command any program (client or not) can know the
  981. internal settings of `GTDriver'. The `Data' field of the command must
  982. point to an instance of `GTDPrefs' structure. The definition of the
  983. structure can be found in the `GTDriverMPC.h' file. After your program
  984. gets the reply of the command your `GTDPrefs' structure will have been
  985. filled with `GTDriver' internal settings.
  986.  
  987. The MPC_NEWPREFS command
  988. ========================
  989.  
  990.          Command: MPC_NEWPREFS
  991.          Data:   -
  992.          Error:  MPC_SERVER    (`GTDriver' is in server mode)
  993.  
  994.    This command tells `GTDriver' that its preferences have been
  995. changed. It was implemented only to allow the needed interaction with
  996. `GTDOptions' and you should not need to use it. The command will fail
  997. if the driver is in "server mode" to avoid problems with the client
  998. program.
  999.  
  1000. The MPC_TESTPREFS command
  1001. =========================
  1002.  
  1003.          Command: MPC_TESTPREFS
  1004.          Data:   -
  1005.          Error:  MPC_SERVER    (`GTDriver' is in server mode)
  1006.  
  1007.    This command is sent by `GTDOptions' when you press the `Test'
  1008. gadget.  It was implemented only to allow the needed interaction with
  1009. `GTDOptions' and you should not need to use it.  The command will fail
  1010. if the driver is in "server mode" to avoid problems with the client
  1011. program.
  1012.  
  1013. The MPC_NOTESTPREFS command
  1014. ===========================
  1015.  
  1016.          Command: MPC_NOTESTPREFS
  1017.          Data:   -
  1018.          Error:  MPC_SERVER    (`GTDriver' is in server mode)
  1019.  
  1020.    This command is sent by `GTDOptions' when you press the `OK' gadget
  1021. after finishing the test of some preferences setting. It was
  1022. implemented only to allow the needed interaction with `GTDOptions' and
  1023. you should not need to use it.  The command will fail if the driver is
  1024. in "server mode" to avoid problems with the client program.
  1025.  
  1026. The MPC_NEWBUTTONS command
  1027. ==========================
  1028.  
  1029.          Command: MPC_NEWBUTTONS
  1030.          Data:   ADDRESS OF THE NAME OF THE P-BUTTON FILE
  1031.          Error:  MPC_SERVER    (`GTDriver' is in server mode)
  1032.  
  1033.    This command tells `GTDriver' to load a new p-buttons definition.
  1034. `Data' field must be a string pointer pointing to the address of the
  1035. name of the file containing such definition. The command will fail if
  1036. the driver is in server mode to avoid problems with the client program.
  1037.  
  1038. Troubleshooting
  1039. ***************
  1040.  
  1041.    * When I move the stylus, the screen pointer behaves in a crazy way.
  1042.  
  1043.      Check that Emulation and Baud Rate settings are the same for the
  1044.      tablet and for the driver. If any one of them is set to different
  1045.      values `GTDriver' won't work correctly.  If you configured the
  1046.      tablet using the init string check the commands in the string
  1047.      (consult your tablet manual)
  1048.  
  1049.    * The screen pointer cannot reach the screen limits
  1050.  
  1051.      Check that DPI settings are the same for the tablet and for the
  1052.      driver. If they are set to_ different values `GTDriver' won't work
  1053.      correctly. Also check that XDim and YDim correspond to the
  1054.      dimensions of the active area.
  1055.  
  1056.    * Only a small area of the tablet is mapped to the screen mouse
  1057.      movements.
  1058.  
  1059.      Check that DPI settings are the same for the tablet and for the
  1060.      driver. If they are set to different values `GTDriver' won't work
  1061.      correctly. Also check that XDim and YDim correspond to the
  1062.      dimensions of the active area.  Another possibility is that you
  1063.      set a clip region (check clip regions dimensions.
  1064.  
  1065.    * The screen pointer follows your stylus movement too slowly.
  1066.  
  1067.      This problem may be due to a too high sampling rate of the tablet:
  1068.      this causes an overloading of the driver and of the serial device.
  1069.      It can be solved by reducing the sampling rate (it's a tablet
  1070.      parameter and not a driver parameter) or by reducing the baud rate
  1071.      (both in the driver and in the tablet). You may also try to
  1072.      increase the priority value.
  1073.  
  1074.    * The screen pointer movements are jerky.
  1075.  
  1076.      This problem may be due to a too low sampling rate of the tablet.
  1077.      It can be solved by raising the sampling rate (it's a tablet
  1078.      parameter and not a driver parameter) or by raising the baud rate
  1079.      (both in the driver and in the tablet).  The problem may be also
  1080.      due to other porgrams interfering with `GTDriver', so you may try
  1081.      to increase the priority value.
  1082.  
  1083.    * My tablet seems to loose stability when I do water sports with it.
  1084.  
  1085.      Remember to remove seaweeds from the bottom of the tablet
  1086.      periodically.
  1087.  
  1088. How to have your tablet supported
  1089. *********************************
  1090.  
  1091.    If your tablet is not supported by `GTDriver', contact the authors.
  1092. In this section it is explained which information you should send them
  1093. to have your tablet supported.  To know how to reach the authors *note
  1094. Disclaimer and authors info::..
  1095.  
  1096.    In your tablet manual you should find a section with a name similar
  1097. to "DATA OUTPUT FORMATS". Usually tablets have an ASCII mode and a
  1098. BINARY mode.  Send us the binary format preferably (because they're
  1099. faster).
  1100.  
  1101.    The binary format is usually indicated in a table like the following
  1102. one (valid for the Summagraphics emulation):
  1103.  
  1104.  
  1105.                 MSbit                              LSbit
  1106.            BYTE|  7    6    5    4    3    2    1    0
  1107.            ----|---------------------------------------
  1108.             1  |  1    PR   T0   SX   SY   C2   C1   C0
  1109.             2  |  0    X6   X5   X4   X3   X2   X1   X0
  1110.             3  |  0    X13  X12  X11  X10  X9   X8   X7
  1111.             4  |  0    Y6   Y5   Y4   Y3   Y2   Y1   Y0
  1112.             5  |  0   Y13   Y12  Y11  Y10  Y9   Y8   Y7
  1113.  
  1114.    We need the table for the binary emulation of your tablet, along
  1115. with the legenda of the acronyms (i.e. PR = proximity bit, C2 = button
  1116. 2 and so on).  Don't forget to report the name of the emulation also!
  1117.  
  1118.    If you have only an ASCII format, it should be found in the manual
  1119. in a format similar to the following one:
  1120.  
  1121.             < 508LPI   XXXX,YYYY,C CR LF
  1122.             > 508LPI   XXXXX,YYYYY,C CR LF
  1123.  
  1124.    with a table stating the C possible values and the meaning (i.e. C
  1125. can vary from '0' to '7', and it means the value of the three buttons
  1126. in the binary format. i.e. if C2=1, C1=0 and C0=1 then C='5')
  1127.  
  1128.    How to send data formats.  E-mail is preferred because it is faster
  1129. and if you have an e-mail address we can solve any problem in the
  1130. implementation easily and quickly. If you don't have an e-mail address
  1131. you can send the data by mail (in this case it would be better if you
  1132. send a copy of the most important pages of the tablet manual).
  1133.  
  1134. Known bugs or problems
  1135. **********************
  1136.  
  1137.    There are no known bugs.  On the Acecad tablet we used in the
  1138. developement most emulations work quite well. If you change device or
  1139. emulation in your tablet you should kill the driver before doing so, as
  1140. some unexpected byte is sent to `GTDriver' in response to the change.
  1141.  
  1142.    Wacom emulation could not be tested, because no beta tester with
  1143. such tablet model has been found. The emulation routine is based on a
  1144. PD source for Unix.  We decided to implement it in this release (even
  1145. if we couldn't test it) because we hope to find someone with this
  1146. tablet. If you have one and the emulation does not work properly,
  1147. please contact us to help us get rid of the problem.
  1148.  
  1149.    We found that some init strings do not work properly. It could
  1150. happen that the first command is executed correctly by the tablet, but
  1151. the following are ignored. As far as we know, the commands are sent
  1152. correctly by `GTDriver': the problem should be due to some undocumented
  1153. hardware constrain in the tablet.
  1154.  
  1155.    Under critical conditions some data can be lost by the driver, but
  1156. don't panic: `GTDriver' will resynchronize on the following packets,
  1157. and you should not experience any real problem. After losing data it
  1158. may happen that a mouse button seems to be pressed while it is not.
  1159. Press and release it to solve this problem.
  1160.  
  1161. Why `GTDriver' is not a commodity
  1162. *********************************
  1163.  
  1164.    You may ask why `GTDriver' `is not' a commodity. The reason is that
  1165. commodities have been misunderstood by many programmers. Commodities
  1166. were defined to simplify the job of writing software that NEEDS to get
  1167. events from the input device. The programs supposed to need this
  1168. feature are basically screen blankers and system monitors. I know it's
  1169. nice to have programs that can be recalled using a shortcut and that
  1170. have hidable GUIs, but the main problem is that whenever you press a
  1171. key, every commodity gets the input event and lets it flow down in the
  1172. commodities chain. If you have many commodities running at the same
  1173. time you get a heavy slowdown in all of the system activities.
  1174. `GTDriver' does not need to know about input events (it only generates
  1175. input events), so it is not a commodity.
  1176.  
  1177. Future improvements
  1178. *******************
  1179.  
  1180.    We plan to add:
  1181.  
  1182.    - the ability to start programs and to execute Arexx scripts by
  1183.      pressing p-buttons;
  1184.  
  1185.    - Arexx port (if someone proves it is useful :-) );
  1186.  
  1187.    - new multiwindow layout for `GTDOptions';
  1188.  
  1189.    - GadTools and MUI version of `GTDOptions';
  1190.  
  1191.    - ability to set XDim, YDim and Clip parameters in `GTDOptions' using
  1192.      the tablet pointing device;
  1193.  
  1194.    - more and more predefined p-buttons masks;
  1195.  
  1196.    - new tablet emulations (if you send us any ...);
  1197.  
  1198.    ... and any interesting feature you suggest us !
  1199.  
  1200. Acknowledgments
  1201. ***************
  1202.  
  1203.    We must thank (in alphabetical order):
  1204.  
  1205.    * Federica Colla, whose kind patience and support have been
  1206.      unvaluable to our project;
  1207.  
  1208.    * Giovanni Gentile for eight color icons;
  1209.  
  1210.    * Remco Straatman who gave us many good ideas and helped with the
  1211.      documentation;
  1212.  
  1213.    * Sebastiano Vigna for having shown us the problem and having given
  1214.      the first suggestions;
  1215.  
  1216.    * Vittorio Calzolari who nicely lent us the tablet used during the
  1217.      development of the software;
  1218.  
  1219.    * the Amiga user group of Milan... just because they exists!
  1220.  
  1221.    and last but not least, the beta testers
  1222.  
  1223.    * Andreas Geierlehner
  1224.  
  1225.    * Carlo Zambellini
  1226.  
  1227.    * Giovanni Gentile
  1228.  
  1229.    * Jan Robijns
  1230.  
  1231.    * Peter Larsen
  1232.  
  1233.    * Remco Straatman
  1234.  
  1235. Disclaimer and authors info
  1236. ***************************
  1237.  
  1238.    The unregistered version is freely distributable as long as all of
  1239. its files are included in their original form without additions,
  1240. deletions, or modifications of any kind, and only a nominal fee is
  1241. charged for its distribution. This software is provided *AS IS* without
  1242. warranty of any kind, either expressed or implied.  By using
  1243. `GTDriver', you agree to accept the entire risk as to the quality and
  1244. performance of the program.
  1245.  
  1246.    Comments, complaints, desiderata are welcome.
  1247.  
  1248.    `GTDriver' was developed by Roberto Attias
  1249.  
  1250.    `GTDOptions' was developed by Marco Zandonadi
  1251.  
  1252.    Please, send any bug reports regarding `GTDriver' and request for
  1253. new tablet support to Roberto Attias:
  1254.  
  1255.           e-mail: attias@ghost.sm.dsi.unimi.it
  1256.           UUCP:   roby@utopia.adsp.sub.org
  1257.           mail:   Roberto Attias
  1258.                   Via Lissoni, 5
  1259.                   20162-I Milano
  1260.                   ITALY
  1261.  
  1262.    and any bug reports regarding `GTDOptions' to Marco Zandonadi:
  1263.  
  1264.           e-mail: zandonad@ghost.sm.dsi.unimi.it
  1265.           UUCP:   marcoz@utopia.adsp.sub.org
  1266.           mail:   Marco Zandonadi
  1267.                   Via Deledda, 23
  1268.                   20052-I Monza (MI)
  1269.                   ITALY
  1270.  
  1271. Registration and upgrades
  1272. *************************
  1273.  
  1274.    `GTDriver' is a shareware program. The unregistered version has no
  1275. functional limitations, but exits after 10 minutes of use.
  1276.  
  1277.    To become a registered user you have to send us a registration fee
  1278. and your full name and address.
  1279.  
  1280.    Registration fees and upgrades:
  1281.    - Internet registration: if you have an internet address, send us
  1282.      $10 US. We will send you an uuencoded keyfile that upgrades the
  1283.      unregistered version to registered.  The keyfile contains your
  1284.      encrypted name and must not be spreaded.
  1285.  
  1286.    - Mail registration: if you don't have an internet address, send us
  1287.      $13 US. We will send you a disk by mail. This disk will contain
  1288.      the latest version of `GTDriver' together with a keyfile that
  1289.      upgrades the unregistered version to registered.  The keyfile
  1290.      contains your encrypted name and must not be spreaded.
  1291.  
  1292.    - Internet upgrades: If you are a registered user and you have ftp
  1293.      access, you can download new versions of `GTDriver' without
  1294.      additional fees.
  1295.  
  1296.    - Upgrade by mail: If you are a registered user and you don't have
  1297.      ftp access, send us $3 US. We will send you a disk by mail. This
  1298.      disk will contain the latest version of `GTDriver' together with a
  1299.      keyfile that upgrades the unregistered version to registered.
  1300.  
  1301.    If you like `GTDriver' and use it, please register yourself, helping
  1302. us to enhance this product.  If you don't think this program is useful
  1303. enough to pay for it, please, at least e-mail (or mail) us your
  1304. suggestions, so that we can make improvements.
  1305.  
  1306. Concept Index
  1307. *************
  1308.  
  1309. * Menu:
  1310.  
  1311. * About (GTDOptions menu item):         About.
  1312. * Absolute coordinates:                 Coordinate mode.
  1313. * Active area:                          XDim and YDim.
  1314. * ASCII format:                         Data format.
  1315. * Baud (GTDOptions gadget):             Baud.
  1316. * Baud rate (hardware configuration):   Baud rate.
  1317. * Binary format:                        Data format.
  1318. * Centimeters:                          Metric.
  1319. * Clip region (GTDOptions gadget):      Clip.
  1320. * Configuration:                        Configuring hardware.
  1321. * Configuration file:                   Configuring software. GTDOptions.
  1322. * Data bits:                            Data bits.
  1323. * Data format:                          Data format.
  1324. * Device (GTDOptions gadget):           Device and Unit.
  1325. * Dip-switches:                         Configuring hardware.
  1326. * Dot per inch:                         DPI.
  1327. * DPI (GTDOptions gadget):              DPI.
  1328. * Driver mode:                          Programming GTDriver.
  1329. * Driver mode:                          Overview.
  1330. * Emulation (GTDOptions gadget):        Emulation (GTDOptions gadget).
  1331. * Emulation (hardware configuration):   Emulation (hardware configuration).
  1332. * ENV::                                 Configuring software. GTDOptions.
  1333. * ENVARC::                              Configuring software. GTDOptions.
  1334. * Exiting:                              Starting and exiting GTDriver.
  1335. * Features:                             Overview.
  1336. * GTD.Prefs:                            Configuring software. GTDOptions.
  1337. * GTDPubPort:                           Programming GTDriver.
  1338. * Hardware:                             Configuring hardware.
  1339. * Inches:                               Metric.
  1340. * Init string:                          Configuring hardware.
  1341. * Init string (GTDOptions gadget):      Init string.
  1342. * Kurta (init string):                  Init string for Summagraphics tablets.
  1343. * Last Saved (GTDOptions menu item):    Last Saved.
  1344. * Message port:                         Programming GTDriver.
  1345. * Metric (GTDOptions gadget):           Metric.
  1346. * Mirror X (GTDOptions gadget):         Mirror X and Mirror Y.
  1347. * Mirror Y (GTDOptions gadget):         Mirror X and Mirror Y.
  1348. * MPC_DRIVERMODE:                       MPC_DRIVERMODE.
  1349. * MPC_GETPREFS:                         MPC_GETPREFS.
  1350. * MPC_NEWBUTTONS:                       MPC_NEWBUTTONS.
  1351. * MPC_NEWPREFS:                         MPC_NEWPREFS.
  1352. * MPC_NOTESTPREFS:                      MPC_NOTESTPREFS.
  1353. * MPC_QUIT:                             MPC_QUIT.
  1354. * MPC_SERVERMODE:                       MPC_SERVERMODE.
  1355. * MPC_TESTPREFS:                        MPC_TESTPREFS.
  1356. * Open (GTDOptions menu item):          Open.
  1357. * Operating mode:                       Operating mode.
  1358. * Origin:                               Origin setting.
  1359. * Overview:                             Overview.
  1360. * Parameters (tablet):                  Configuring hardware.
  1361. * Pressure treshold (GTDOptions gadget): Pressure.
  1362. * Priority (GTDOptions gadget):         Priority.
  1363. * Pseudo-button:                        Overview.
  1364. * Pseudo-button:                        Pseudo-buttons.
  1365. * Quit (GTDOptions menu item):          Quit.
  1366. * Relative coordinates:                 Coordinate mode.
  1367. * Resolution:                           Resolution.
  1368. * Sampling rate:                        Sampling rate.
  1369. * Save As (GTDOptions menu item):       Save As.
  1370. * Server mode:                          Programming GTDriver.
  1371. * Server mode:                          Overview.
  1372. * Starting:                             Starting and exiting GTDriver.
  1373. * Stream mode:                          Operating mode.
  1374. * Struct TabletCommand:                 Programming GTDriver.
  1375. * Summagraphics (init string):          Init string for Summagraphics tablets.
  1376. * SwapXY (GTDOptions gadget):           Swap XY.
  1377. * Unit (GTDOptions gadget):             Device and Unit.
  1378. * Wacom (init string):                  Init string for Wacom tablets.
  1379. * XDim (GTDOptions gadget):             XDim and YDim.
  1380. * YDim (GTDOptions gadget):             XDim and YDim.
  1381.  
  1382.